/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.financeiro.view;

import br.jm.financeiro.datamodel.LazyAssunto;
import br.jm.financeiro.entity.Assunto;
import br.jm.financeiro.sistema.eao.AssuntoEao;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.model.LazyDataModel;

/**
 *
 * @author joao
 */
public class AssuntoBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private Assunto selectedAssunto;
    private LazyDataModel<Assunto> lazyModel;
    private AssuntoEao assuntoEAO;
    private boolean salvar;

    public AssuntoBean() {
        assuntoEAO = AssuntoEao.getInstance();
        selectedAssunto = new Assunto();

        lazyModel = new LazyAssunto(assuntoEAO);
    }

    public void inserir(ActionEvent actionEvent) {
        FacesMessage msg = null;

        try {
            selectedAssunto.setIdAssunto(null);
            assuntoEAO.create(selectedAssunto);
            LoginBean.AtualizaLog("", "INCLUSÃO ASSUNTO: ".concat(selectedAssunto.getDscAssunto()));
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Assunto Inserido com Sucesso", selectedAssunto.getDscAssunto());

        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Inserir" + selectedAssunto.getDscAssunto(), e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void alterar(ActionEvent actionEvent) {
        FacesMessage msg = null;

        try {
            assuntoEAO.edit(selectedAssunto);
            LoginBean.AtualizaLog("", "ALTERAÇÃO ASSUNTO: ".concat(selectedAssunto.getDscAssunto()));
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Assunto Alterado com Sucesso", selectedAssunto.getDscAssunto());
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Alterar: " + selectedAssunto.getDscAssunto(), e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluir(ActionEvent actionEvent) {
        FacesMessage msg = null;

        try {
            assuntoEAO.destroy(selectedAssunto);
            LoginBean.AtualizaLog("", "EXCLUSÃO ASSUNTO: ".concat(selectedAssunto.getDscAssunto()));
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Assunto Excluida com Sucesso", selectedAssunto.getDscAssunto());
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Excluir: " + selectedAssunto.getDscAssunto() + "ASSUNTO SENDO UTILIZADO EM ALGUM PROCESSO!", e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public LazyDataModel<Assunto> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<Assunto> lazyModel) {
        this.lazyModel = lazyModel;
    }

    public Assunto getSelectedAssunto() {
        return selectedAssunto;
    }

    public void setSelectedAssunto(Assunto selectedAssunto) {
        this.selectedAssunto = selectedAssunto;
    }

    public void preparaInserir(ActionEvent event) {
        this.selectedAssunto = new Assunto();
        this.salvar = true;
    }

    public boolean isSalvar() {
        return salvar;
    }

    public void setSalvar(boolean salvar) {
        this.salvar = salvar;
    }

}
